package com.xxl.job.executor.mvc.controller;

import com.xiaogang.xxljobadminsdk.model.XxlJobInfoAddParam;
import com.xiaogang.xxljobadminsdk.service.XxlJobService;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.*;

import java.text.DateFormat;
import java.text.SimpleDateFormat;

@RestController
@RequestMapping("test")
@EnableAutoConfiguration
public class TestController {

    @Autowired
    private XxlJobService xxlJobService;

    // 添加任务并运行
    // 添加任务并运行
    @PostMapping("/addTask")
    @ResponseBody
    public void addTask() {
        try {
            /**
             customId – 自定义的唯一的业务id，此id在所有任务中保持唯一,注意：这个唯一标识被放到了负责人字段
             triggerTime – 任务执行时间，必须大于当前时间
             executorParam – 任务执行参数
             executorHandler – 任务处理器，关联@XxlJob的value
             */
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            XxlJobInfoAddParam param = new XxlJobInfoAddParam();
            param.setAuthor("sc");
            param.setJobDesc("测试任务");
            param.setExecutorParam("我是执行的参数");
            param.setExecutorHandler("testHandler");
            param.setScheduleConf("0/5 * * * * ? *");
            Integer taskId = xxlJobService.add(param);
            System.out.println("taskId = " + taskId);
            // 开始运行任务
            xxlJobService.start(taskId);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 删除
    @PostMapping("/deleteTask/{taskId}")
    @ResponseBody
    public void deleteTask(@PathVariable Integer taskId) {
        try {
            // 删除任务
            xxlJobService.remove(taskId);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 任务处理器
    @XxlJob("testHandler")
    public void test() {
        System.out.println("计划任务开始执行");
        // 获取任务参数
        String param = XxlJobHelper.getJobParam();
        System.out.println("计划任务传输过来的参数 ------" + param);
    }

}